
#ifndef __PDFPARSE_H__
#define __PDFPARSE_H__
#include "stdlib.h"
#include "stdio.h"
#include "stdint.h"
#include "string.h"
#include "stdbool.h"

/**
字色              背景              颜色
---------------------------------------
30                40              黑色
31                41              紅色
32                42              綠色
33                43              黃色
34                44              藍色
35                45              紫紅色
36                46              青藍色
37                47              白色
*/

// 颜色定义
typedef enum
{
    BLACK = 30,
    RED = 31,
    GREEN = 32,
    YELLOW = 33,
    BLUE = 34,
    PURPLE = 35,
    CYAN = 36,
    WHITE = 37

} colors_e;

/**
 * @brief 解析工具状态
 *
 */
typedef struct
{
    // 是否是pdf文件
    bool isPdf;

    // 是否是块
    bool isBlock;

} toolsState_t;

/**
 * @brief pdf 字符串文件头结构体
 *
 */
typedef struct
{
    // % 符号
    uint8_t flag[1];

    // 固定字段 PDF
    uint8_t pdf[3];

    // 保留符号 -
    uint8_t reserve[1];

    // 版本号
    uint8_t ver[3];
} pdfheader_t;

#define MAX_READ_SIZE 1024

/**
 * @brief pdf obj 或者 stream 结构体
 *
 */
typedef struct
{
    // 对象号
    uint32_t number;

    // 对象编辑次数
    uint32_t editNumber;

    // 对象标记
    uint8_t flag[10];

    struct pdfObjData_t
    {
        // 对象大小
        uint32_t size;

        // 对象内容
        uint8_t *data;
    } objData;

} pdfObj_t;

uint32_t setLogColor(colors_e color);
uint64_t endianConvert(uint8_t *data, uint32_t datalen);

// PDF 的函数
int8_t contentTypeCheck(uint8_t *data, uint32_t datalen);
int8_t pdfHeadParse(uint8_t *data, uint32_t datalen);

#endif